Amazon SNS で配信ログを有効にする方法を教えてください

Amazon SNS で配信ログを有効にする方法を教えてください

Clock Icon2024.08.14

困っていた内容

Amazon SNS の構築を行なっています。
デバックのため通知したメッセージのログを確認したいです。
ログ記録を有効にする方法を教えてください。

どう対応すればいいの?

トピックで「配信ステータスのログ記録」を設定してください。

amazon sns logging enabled 2

次のプロトコルに関しては「配信ステータスのログ記録」を設定すると、メッセージに関するログが CloudWatch Logs に出力されます。

  • AWS Lambda
  • Amazon SQS
  • HTTP/HTTPS
  • Platform application endpoint
  • Amazon Data Firehose

※ SMS に関しては次の記事を参照

Amazon SNSのSMS配信のロギングを有効にしてみた | DevelopersIO

やってみた

Amazon SNS コンソールの「トピックの作成」を選択します。

amazon sns logging enabled 1

名前等を入力して「配信ステータスのログ記録」を選択します。

amazon sns logging enabled 2

対象プロトコルを選択。
「新しいサービスロールの作成」を選択して「新しいロールの作成」を選択します。

amazon sns logging enabled 3

「ロールを作成」を選択します。

amazon sns logging enabled 4

「トピックの作成」を選択します。

amazon sns logging enabled 5

トピックが作成されます。

amazon sns logging enabled 6

「サブスクリプションの作成」を選択します。

amazon sns logging enabled 7

送信先となる Lambda を選択して「サブスクリプションの作成」を選択します。

amazon sns logging enabled 8

動作テスト

「メッセージの発行」を選択します。

amazon sns logging enabled 9

任意の値を入力して「メッセージの発行」を選択します。

amazon sns logging enabled 10

メッセージが発行されました。

amazon sns logging enabled 11

ログは次のロググループに出力されます。

成功ログ:sns/【リージョン】/【アカウント ID】/【SNS トピック名】
失敗ログ:sns/【リージョン】/【アカウント ID】/【SNS トピック名】/Failure

例:sns/ap-northeast-1/123456789012/hato-sns-logging/Failure

成功時のサンプル

{
    "notification": {
        "messageMD5Sum": "de74b2dc8cf56b7563cd6408a3040526",
        "messageId": "6e27ae47-0485-5284-83bc-f168e7e9f4fb",
        "topicArn": "arn:aws:sns:ap-northeast-1:1234567890123:hato-sns-logging",
        "timestamp": "2024-08-01 09:28:12.682"
    },
    "delivery": {
        "deliveryId": "b2097e2d-0f1e-5cf4-baf7-2102ec72fece",
        "destination": "arn:aws:lambda:ap-northeast-1:1234567890123:function:hato-lambda",
        "providerResponse": "{\"lambdaRequestId\":\"46480ce4-21be-4d49-b5d2-3b2d6962f04d\"}",
        "dwellTimeMs": 68,
        "statusCode": 202
    },
    "status": "SUCCESS"
}

失敗時のサンプル

{
    "notification": {
        "messageMD5Sum": "6dadaae3513e6c2d286102556b402245",
        "messageId": "6d693e3a-7990-51cb-a25b-61159a494d3b",
        "topicArn": "arn:aws:sns:ap-northeast-1:1234567890123:hato-sns-logging",
        "timestamp": "2024-08-01 09:30:01.176"
    },
    "delivery": {
        "deliveryId": "a95b619d-b5bf-5908-8a9f-3eb2566636ec",
        "destination": "arn:aws:lambda:ap-northeast-1:1234567890123:function:hato-lambda",
        "providerResponse": "{\"ErrorCode\":\"AccessDeniedException\",\"ErrorMessage\":\"User: sns.amazonaws.com is not authorized to perform: lambda:InvokeFunction on resource: arn:aws:lambda:ap-northeast-1:1234567890123:function:hato-lambda because no resource-based policy allows the lambda:InvokeFunction action\",\"lambdaRequestId\":\"Unrecoverable\"}",
        "dwellTimeMs": 46,
        "statusCode": 403
    },
    "status": "FAILURE"
}

参考資料

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.